<?php
    /*
    *   分类(栏目)模型
    */
    class Type extends AppModel
    {
        var $name='Type';
        var $actsAs = array('Tree');
        var $validate = array(
            'name' => array(
            'notEmpty' => array(
                'rule'=>'notEmpty',
                'message' => '分类名称不能为空'),
             'isUnique' => array(
                'rule' => 'isUnique',
                'message' => '该分类名称已经存在'
             )),
            'keyword' => array(
                'rule'=>array('maxLength',255),
                'message' => '关键词最大长度不能超过255字符(一个汉字为两个字符)'
              ),
            'description' => array(
                'rule' => array('maxLength',255),
                'message' => '描述最大长度不能超过255字符(一个汉字为两个字符)'
              ),
            'tplName'=>'alphaNumeric',
            'htmlPath'=>'notEmpty'
        );
        
    function beforeValidate()
    {
        if(isset($this->data['Type']['pri']) and $this->data['Type']['pri']=='')
            $this->data['Type']['pri']=10;
            
    }
    
    //获取一个分类的所有子分类
     function dv_child($param)
    {
            $tid=isset($param['cate_id'])?$param['cate_id']:null;
            $isAll=isset($param['isAll'])?$param['isAll']:false;
            if(!preg_match('/^[0-9]+$/',$tid)){
                return array('error'=>'cate_id参数错误');
            }
            if(!$this->findById($tid)){
                return array('error'=>'不存在此参数cate_id指定的分类');
            }
           return $this->children($tid,$isAll);
    }
    
    //获取一个以某个分类为根的子树
     function dv_tree($param)
    { 
            $tid=isset($param['cate_id'])? $param['cate_id']:null;
            if(!preg_match('/^[0-9]+$/',$tid) and !empty($tid)){
                return array('error'=>'tid参数应为整数');
            }
        if(empty($tid)){
          $tree = $this->find('threaded');
          return $tree;
        }else{
           $pnod=$this->find('first',array('conditions'=> array('Type.id'=>$tid)));
           if(!empty($pnod)){
             $left=$pnod['Type']['lft'];
             $right=$pnod['Type']['rght'];
             $tree= $this->find('threaded',array('conditions'=>array('Type.lft'=>">$left"
             ,'Type.rght'=>"<$right")));
            return $tree;
          }else{
                return array('error'=>'指定的分类tid不存在');
          }
       }
    }
    
    //获取一个分类结点的路径
    function dv_path($param)
    {
           $tid=isset($param['cate_id'])?$param['cate_id']:null;
           if(!preg_match('/^[0-9]+$/',$tid) or !$this->findById($tid)){
                        return array('error'=>'参数tid所指定的分类并不存在');
          }
         $result=$this->getPath($tid,array('id','name','htmlPath'));
         foreach($result as $k=>$v)
            $result[$k]=$v['Type'];
         return $result;
    }
    
}
?>